On-chip calibration method

ABSTRACT

A system for the calibration of a programmable system-on-a-chip is described. More specifically, embodiments of the present invention relate to a system that calibrates a programmable analog block in a system-on-a-chip without the use of external components.

REFERENCE TO RELATED APPLICATION

This application claims priority to U.S. Provisional Application 61/176,923, filed May 10, 2009.

TECHNICAL FIELD

The present invention relates generally to programmable systems-on-a-chip and, more particularly, to a system and method for the calibration of a programmable system-on-a-chip.

BACKGROUND

As the development and implementation of semiconductor projects becomes increasingly complex, there is often a need for additional peripheral circuitry to achieve design objectives. Some examples of peripheral circuitry may include operational and instrumentation amplifiers, filters, timers, digital logic circuits, analog-to-digital converters (“ADCs”), and digital-to-analog converters (“DACs”). Typically, additional peripheral circuitry tends to consume more power and requires additional space and design considerations which can significantly impact the cost and development cycle of a project.

With the advent of the programmable embedded system-on-a-chip, such as the PSoC® processing device, developed by Cypress Semiconductor Corporation, San Jose, Calif., many of the applications that require peripheral components can now be implemented all within a single integrated circuit. The PSoC® integrates configurable and programmable analog and digital functions, memory, and microcontroller functionality in one package. Analog blocks, for instance, can be configured to produce analog filters, comparators, switch capacitors, dual-tone multi-frequency signaling (DTMF) receivers, and programmable, instrumental, inverting, non-inverting, and operational amplifiers. The digital programmable blocks can be configured to implement, for example, counters, timers, pulse-width modulators (PWMs) and calibration algorithms. As integrated circuits become smaller, faster, and more sensitive, various factors during and after manufacturing can affect the performance. For example, during manufacturing, process variations can result in integrated circuits having significant parametric shifts in various electrical properties. In particular, due to the process variations, the analog circuits within the analog blocks may require calibration to trim out all process variations in the circuit, such as in the ADC, DAC, reference circuits, buffers, etc. Calibration can be performed using read-only memories (ROMs), laser trimming, or flash memories.

FIG. 1 illustrates a block diagram for a conventional system 100 for calibrating a programmable system-on-a-chip. The conventional system 100 includes a central processing unit (CPU) subsystem 120, a programmable logic array 140, and programmable analog blocks 130—all of which reside on an integrated circuit with a common substrate 110. The CPU subsystem 120 includes a microcontroller and flash memory (not shown). The system 100 further includes external calibration circuitry 150. The components contained in the integrated circuit 110 are electrically interconnected. The external calibration circuitry is electrically connected to the programmable analog blocks 130, the CPU subsystem 120, and the programmable logic array 140. The external calibration circuitry 150 is typically integrated on another integrated circuit, but if it is integrated on the same integrated circuit as the CPU subsystem, this circuit is distinct from the CPU subsystem, such as designed-for-test (DUT) circuitry, which can be turned on when calibrating the programmable analog blocks 130.

In one conventional approach, the external calibration circuitry 150 performs calibration routines to set the trim values for the programmable analog blocks 130 of the system 100. Calibration routines performed by the external calibration circuitry 150 are known by those of ordinary skill in the art and additional details regarding their operations have not been described herein.

Additional peripheral circuitry may be undesirable for the reasons discussed above. In another conventional approach, the system 100 uses the microcontroller in the CPU subsystem 120 to calibrate the programmable analog block 130. The microcontroller determines the calibrated values and stores the values in flash memory. Flash memory typically uses at least 1.6 volts for proper operation with the microcontroller. The conventional system 100 does not permit dynamic calibration. In addition, the communication between the programmable analog blocks 130 is inflexible, thereby prohibiting calibration of all available programmable analog blocks 130 with only on-chip resources. This may require additional external calibration circuitry (e.g., 150) to calibrate all available programmable analog blocks 130. In summary, while newer technologies that incorporate a system-on-a-chip provide compact, low power, and cost effective solutions to increasingly complex applications, many analog functional modes of operation require additional external circuitry to perform the necessary calibration algorithms.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example, and not of limitation, in the figures of the accompanying drawings in which:

FIG. 1 illustrates a block diagram for a conventional system for calibrating a programmable system-on-a-chip.

FIG. 2 illustrates a functional block diagram of a system-on-a-chip for calibrating analog blocks according to an embodiment of the present invention.

FIG. 3 illustrates a flow chart of a method of calibrating programmable analog blocks in a system-on-a-chip according to an embodiment of the present invention.

FIG. 4 illustrates a flow chart of a method of applying calibrated values to programmable analog blocks on a system-on-a-chip prior to booting the microcontroller according to an embodiment of the present invention.

FIG. 5 illustrates a functional block diagram of a system-on-a-chip for generating a calibration value for a programmable analog block according to an embodiment of the present invention.

FIG. 6 illustrates a functional block diagram of a system-on-a-chip for generating a calibration value for a programmable analog block according to an embodiment of the present invention.

FIG. 7 illustrates a functional block diagram of a system-on-a-chip for loading calibration data to a programmable analog system according to an embodiment of the present invention.

DETAILED DESCRIPTION

The following embodiments of the invention relate to a system for calibration. More specifically, embodiments of the present invention relate to a system-on-a-chip that calibrates programmable analog blocks without the use of external components. The following description sets forth numerous specific details such as examples of specific systems, components, methods, and so forth, in order to provide a good understanding of several embodiments of the present invention. It will be apparent to one skilled in the art, however, that at least some embodiments of the present invention may be practiced without these specific details. In other instances, well-known components or methods are not described in detail or are presented in a simple block diagram format in order to avoid unnecessarily obscuring the present invention. Thus, the specific details set forth are merely exemplary. Particular implementations may vary from these exemplary details and still be contemplated to be within the spirit and scope of the present invention.

References in the description to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification do not necessarily all refer to the same embodiment.

FIG. 2 illustrates a functional block diagram of a system-on-a-chip 200 for calibrating programmable analog blocks 220 according to an embodiment of the present invention. The system-on-a-chip 200 includes a programmable analog system 210 including multiple programmable analog blocks 220, labeled in FIG. 2 as “analog block 1” through “analog block N,” where N is the total number of programmable analog blocks. The system-on-a-chip 200 includes an analog-to-digital converter 240 (hereinafter “ADC 240”). In one embodiment, one of the programmable analog blocks 220 is configured as the ADC 240. In another embodiment, the ADC 240 is a high-performance 16-bit ADC. Alternatively, other ADC's may be used. The system-on-a-chip 200, in the depicted embodiment, also includes a programmable routing fabric 230, a non-volatile memory cell 250, a direct memory access controller 270 (hereinafter “DMA controller 270”), a programmable logic array 260, and a microcontroller 280. In one embodiment, the programmable routing fabric 230 includes an infrastructure to bi-directionally transfer analog and/or digital data between the various components of system-on-a-chip 200. In other embodiments, the programmable routing fabric 230 may be limited to bidirectionally transferring only analog or digital data between the various components of the system-on-a-chip 200. For example, in one embodiment, the programmable routing fabric 230 includes a global analog bus that connects the programmable analog blocks 220 with the ADC 240 and the ADC 240 sends the digitized values to the programmable logic array 260. The programmable routing fabric 230 can also include one or more digital busses between the non-volatile memory cell 250, the DMA controller 270, the microcontroller 280, and the programmable logic array 260. In one embodiment, the programmable routing fabric 230 includes an analog routing fabric and a digital routing fabric (not shown). It should also be noted that although the programmable routing fabric 230 has been illustrated as a single component electrically connecting the other components together, the programmable routing fabric 230 may include direct connections between two or more components. For example, the non-volatile memory cell 250 may be a non-volatile latch (NV latch) that has direct connections (e.g., hard-wired connections) to a programmable analog block 220. As described herein, when the calibrated value is stored in the NV latch, and the analog block is powered on, the NV latch provides the calibrated value on the direct connection, essentially hard-wiring the calibrated value into the programmable analog block 220. The NV latch can also have a separate connection to the DMA controller 270, for example, so that the DMA controller 270 can write the calibrated value into the NV latch 250 during the calibration process. Furthermore, although the system-on-a-chip 200 depicts the programmable routing fabric 230 outside of the programmable analog system 210, another embodiment may fully or partially incorporate the programmable routing fabric 230 within the programmable analog system 210.

In one embodiment, the programmable routing fabric 230 has at least two modes of operation, for example, one for normal operations and the other for calibrating the programmable analog blocks 220. The “normal” mode of operation configures the programmable routing fabric 230 to perform conventional routing operations. For example, this may include transferring analog or digital data between the various blocks of the system-on-a-chip 200. The “calibration” mode of operation is configured to route calibration data between the various blocks of the system-on-a-chip 200. For example, the programmable routing fabric 230 may route calibration data between the programmable logic array 260, ADC 240, and the programmable analog blocks 220 in order to calibrate the programmable values of the programmable analog blocks 220. Other variations of data transfer for the calibration of the programmable analog blocks 220 are discussed below. In another embodiment, the programmable routing fabric 230 may include additional modes of operation. For example, the programmable routing fabric 230 may be configured to operate in a dynamic calibration mode in which the programmable analog blocks 220 can be calibrated during operation of the system-on-a-chip (e.g., “on the fly”), as opposed to an initial calibration of the system-on-a-chip 200 during manufacturing or during start-up of the system-on-a-chip 200. In one embodiment, the microcontroller 280 can switch the programmable routing fabric 230 between modes. In another embodiment, the programmable logic array 260 can switch the programmable routing fabric 230 between modes.

In one embodiment, the programmable analog blocks 220 include an interface to the programmable logic array 260, the DMA controller 270, the microcontroller 280 and the non-volatile memory cell 250. Alternatively, the programmable analog blocks 220 may include fewer interfaces. As described above, in one embodiment, the non-volatile memory cell 250 is a NV latch. The system-on-a-chip 200 may include multiple NV latches. Alternatively, the non-volatile memory cell 250 may be a flash memory cell of a flash memory. In one embodiment, calibration data may be stored in both the NV latches, as well as flash memory. For example, the NV latch may store a first calibrated value, and the flash may store a fine-tuned calibrated value.

In one embodiment, the global analog bus may incorporate programmable routing and include an interface to the programmable logic array 260, the DMA controller 270, the microcontroller 280, and the non-volatile memory cell 250. In one embodiment, the programmable logic array 260 may include an interface to the DMA controller 270, the microcontroller 280 and the non-volatile latch. In one embodiment, the DMA controller 270 may include an interface to the microcontroller 280, the NV latch, and flash memory. In one embodiment, the system-on-a-chip 200 is fully integrated on a single silicon substrate. Alternatively, some of the components of the system-on-a-chip 200 may be integrated on multiple substrates.

In operation, the programmable analog blocks 220 are configured in functional modes of operation with programmable values to be calibrated. Some examples of functional modes of operation may include, but are not limited to: ADC's and DAC's, which require trimming for gain and offset errors; buffers and amplifiers trimmed for absolute voltage; and band gap and regulators trimmed for absolute accuracy. In one embodiment, the output signal of the programmable analog blocks 220 are transferred to the ADC 240 via the global analog bus where the analog output signals are digitized for subsequent digital processing by the microcontroller 280 and/or the programmable logic array 260. The ADC 240 then sends the digitized output signals to the programmable logic array 260 and/or the microcontroller 260. In one embodiment, the programmable logic array 260 is configured to apply a dynamic, iterative calibration algorithm to the digitized output to minimize the difference between the current digitized output signal and a predetermined output value to generate a calibration value. For example, if a programmable analog block 220 is configured as a band gap reference to be set at 1.25V, the programmable logic array 260 dynamically and iteratively calibrates the programmable analog block 220 until its output is within a predetermined range of the target reference voltage. In one embodiment, the programmable logic array 260 utilizes the calibration value to calibrate the programmable value of the programmable analog block 220. For example, the programmable logic array 260 can store the calibrated data in the non-volatile memory cell 250 (e.g., a NV latch, a flash cell, or any combination thereof). Alternatively, the programmable logic array 260 may perform any type of calibration routine to determine the calibrated values for the programmable analog blocks 220 as would be appreciated by one of ordinary skill in the art having the benefit of this disclosure. In this embodiment, the programmable logic array 260 can perform the calibration routines independent of the microcontroller 280. This may free up the microcontroller 280 to perform other operations or to be powered down or off while the programmable logic array 260 performs the calibration. In another embodiment, the programmable logic array 260 can calibrate the programmable analog blocks 220 using the microcontroller 280. For example, after the programmable logic array 260 has calibrated the values, the microcontroller 280 can read the calibrated values and store the calibrated values in the non-volatile memory cell 250. In another embodiment, the system-on-a-chip 200 can be configured to allow the microcontroller 280 to run the calibration routines with or without help from the programmable logic array 260. By having multiple configuration options, the system-on-a-chip 200 can provide various solutions to disparate applications.

In one embodiment, the calibration value is stored in the non-volatile memory cell 250. The non-volatile memory cell 250 may include any non-volatile memory or storage device that can retain electronic data when power is not applied. Some non-limiting examples include flash memory, ROMs, EPROMs, magnetic computer storage devices, and optical storage devices. In one embodiment, the non-volatile memory cell 250 is a memory cell of a non-volatile memory (NVM), such as, for example, a flash memory. In another embodiment, the non-volatile memory cell is an NV latch as described below. In another embodiment, the calibrated value can be stored in both the NV latch and the flash memory. In another embodiment, the NV latch stores a first calibrated value and the flash memory stores additional calibration information.

In one embodiment, the DMA controller 270 transfers the calibration value from the non-volatile memory cell 250 to the associated programmable analog block 220, independent of the microcontroller 280, which, in one embodiment, calibrates the programmable value of the programmable analog block 220. In another embodiment, the DMA controller 270 transfers the calibration value from the non-volatile memory cell 250 in connection with the microcontroller 280.

As described above, typically flash memory uses at least 1.6 volts for operation, and requires the microcontroller 280 to be booted and operational to access the flash memory. However, in one embodiment, when using a NV latch, the DMA controller 270 can independently access the NV latch and load the calibrated values into the corresponding programmable analog block 220 before the microcontroller 280 is booted. Thus, the calibrated values can be loaded or applied to the one or more programmable analog blocks 220 independent of the microcontroller 280 or without interaction with the microcontroller 280. For example, the programmable logic array 260, in connection with the DMA controller 270, can access the non-volatile memory cell 250 to retrieve the calibrated values that were previously determined by the programmable logic array 260 and stored in the non-volatile memory cell 250, and can apply the calibrated values to the one or more programmable analog blocks 220 via the programmable routing fabric 230. In one embodiment, the NV latches operate at 1.2 volts, and thus, can be used to calibrate the one or more programmable analog blocks 220 using lower power than when using flash memory. In another embodiment, the NV latches, storing the calibrated value, can apply the calibrated value on a direct connection with the programmable analog block 220 when the programmable analog block 220 is powered on. This may allow the analog block 220 to be calibrated before the DMA controller 270, the programmable logic array 260, and the microcontroller 280 are powered on. In another embodiment, once the NV latch provides the calibrated value to the programmable analog block 220, the DMA controller 270 can be powered on to read the flash memory and load additional calibration information into the programmable analog block 220. In one embodiment, the programmable logic array 260 can instruct the DMA controller 270 to access the flash memory and apply the calibrated values to the programmable analog block 220 independent of the microcontroller 280 and/or before booting the microcontroller 280. In yet another embodiment, the microcontroller 280 can instruct the DMA controller 270 to access the flash memory and apply the calibrated values to the programmable analog block 220 with or without using the programmable logic array 260.

When using NV latches, in one embodiment, the DMA controller 270 may transfer the calibration values stored in the NV latches to the programmable analog blocks 220 via the programmable routing fabric 230 prior to microcontroller 280 booting up. This may improve the efficiency and speed of the calibration process of the programmable analog blocks 220. For example, in one embodiment, the NV latch bits can operate at 1.2V so that programmable analog blocks, such as references and regulators, which may be calibrated at a 1.2V reference voltage, may be calibrated before the microcontroller 280 reaches operating voltage levels to ensure accurate operation at system boot up. Typically, microcontroller 280 operative voltages are 3.3V or 5V, and, as described above, typically flash memory operates at 1.6 volts. Thus, the NV latches can be used to reduce the power used during calibration of the analog programmable blocks 220 and can be used to apply the calibrated values to the programmable analog blocks 220 sooner in the boot up process. In another embodiment using the NV latches, the programmable logic array 260 applies the calibrated values to the programmable analog blocks 220 after the microcontroller 280 has been booted. In one embodiment, since the programmable logic array 260 can access the non-volatile memory cell 250 using the DMA controller 270, the programmable logic array 260 can calibrate the programmable analog blocks 220 without the microcontroller 280. In another embodiment, the programmable logic array 260 can calibrate the programmable analog blocks 220 with the help of the microcontroller 280. However, even if the programmable logic array 260 uses the microcontroller 280 to calibrate the programmable analog blocks 220, the calibrated values can be applied to the programmable analog blocks 220 from the non-volatile memory cell 250 independent of, and without interaction with the microcontroller 280. For example, the NV latches can directly apply the calibrated values to the programmable analog blocks 220 when the programmable analog blocks 220 are powered on, or the programmable logic array 260 can apply the calibrated values to the programmable analog blocks 220 before booting the microcontroller 280. For example, the programmable logic array 260, using the DMA controller 270, may independently transfer data from the non-volatile memory cell 250 to any of the various blocks of system-on-a-chip 200, including, but not limited to, all programmable analog blocks 220 and the programmable logic array 260, just like the DMA controller 270 can do with the microcontroller 280 when the microcontroller 280 is operational. In an alternative embodiment of the present invention, the microcontroller 280 may direct the transfer of the calibration values from the non-volatile memory cell 250 to the programmable analog blocks 220.

In another embodiment, calibration may be achieved by firmware, hardware, software, or any combination thereof, in conjunction with the microcontroller 280. For example, the microcontroller 280 may execute software that instructs a programmable analog block 220 in a particular mode of operation to output a value to the ADC 240 via the programmable routing fabric 230. The ADC 240 digitizes the analog output of the programmable analog block 220 and the software determines if the output falls within a predetermined range. In one embodiment, the microcontroller 280 applies a dynamic, iterative calibration algorithm to the digitized output to minimize the difference between the current digitized output signal and a predetermined output value to generate a calibration value as described above. The microcontroller 280 can switch the programmable routing fabric 230 to the calibration mode while performing a calibration routine, and then switch to the programmable routing fabric 230 to the normal mode after performing the calibration routine. As described herein, in other embodiment, the programmable logic array 260 can perform the calibration. In this embodiment, the programmable logic array 260 can switch the programmable routing fabric 230 to the appropriate mode.

FIG. 3 illustrates a flow chart 300 of a method of calibrating programmable analog blocks 220 in a system-on-a-chip according to an embodiment of the present invention. The method 300 is performed by processing logic that may comprise hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computing system or a dedicated machine), firmware (embedded software), or any combination thereof. In one embodiment, the programmable logic array 260 of FIG. 2 performs the method 300. In another embodiment, the microcontroller 280 performs the method 300. In another embodiment, the programmable logic array 260 and the microcontroller 280 perform the method 300. Alternatively, other components of the system-on-a-chip 200 perform some or all of the operations of method 300.

Referring to FIG. 3, processing logic begins with configuring the programmable analog blocks 220 in functional modes (block 310). The programmable analog blocks 220 have programmable values that can be calibrated. Some examples of functional modes may include, but are not limited to: ADC's and DAC's which require trimming for gain and offset errors; buffers and amplifiers trimmed for absolute voltage; and band gap and regulators trimmed for absolute accuracy. There may be multiple programmable analog blocks 220 that may be configured in functional modes (analog blocks 1 through N—see FIG. 2), all of which may be interconnected via a global analog bus.

Next, the processing logic transfers the output of the programmable analog block 220 to an ADC 240 via the global analog bus (block 320). In one embodiment, the global analog bus is the analog routing fabric of the programmable routing fabric 230. The ADC digitizes the analog output values of the programmable analog block 220. At block 330, the ADC transfers the digitized analog output values to the programmable logic array 260 via the programmable routing fabric 230.

At block 340, the processing logic performs a dynamic iterative calibration algorithm to the digitized output to minimize the difference between the current digitized output signal and a predetermined output value to generate a calibration value. In one embodiment, the programmable logic array 260 performs the dynamic iterative calibration algorithm. In another embodiment, the microcontroller 280 and the programmable logic array 260 perform the iterative calibration algorithm. Alternatively, other types of calibration algorithms can be implemented as would be appreciated by one of ordinary skill in the art having the benefit of this disclosure. The calibration value is used to calibrate the programmable values of the programmable analog blocks 220. In one embodiment, the analog routing fabric is configured in the “calibration” mode of operation throughout the calibration process as described in FIG. 2.

At block 350, the processing logic transfers the calibration value to the programmable analog block 220 via the programmable routing fabric 230 to calibrate the programmable value. If at block 360, the processing logic determines that the newly calibrated programmable analog block 220 output value is not within a predetermined range, the processing logic repeats blocks 320 through 350 in an iterative process until calibration is achieved. It should be noted that when using other non-iterative calibration algorithms, the processing logic may not repeat blocks 320 through 350.

If at block 360, the processing logic determines that the programmable analog block 220 is calibrated, the processing logic stores the calibration value in the non-volatile memory cell 250 (block 370). The non-volatile memory cell 250 may include any non-volatile storage device that can retain electronic data when power is not applied. Some non-limiting examples include flash memory, ROMs, EPROMs, magnetic computer storage devices, and optical storage devices. In addition, the calibration data may be stored in the NV latches as described in FIG. 2.

Subsequent to storing the calibration value into the non-volatile memory cell, the processing logic can apply the calibration value to the programmable analog block 220 when the system-on-a-chip 200 is powered on. For example, the non-volatile memory cell can directly apply the calibrated values to the programmable analog block 220 when the programmable analog block 220 is powered on. In another embodiment, the DMA controller 270 can independently transfer the calibration data from the non-volatile memory cell 250 to the programmable analog block 220. For example, in subsequent booting sequences, after the calibration values are saved in the non-volatile memory cell 250, the DMA controller 270 can transfer the calibration data to the programmable analog block 220 without instructions from or other interactions with the microcontroller 280.

FIG. 4 illustrates a flow chart of a method 400 of applying calibrated values to programmable analog blocks 220 on a system-on-a-chip 200 prior to booting the microcontroller 280 according to an embodiment of the present invention. The method 400 is performed by processing logic that may comprise hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computing system or a dedicated machine), firmware (embedded software), or any combination thereof. In one embodiment, the programmable logic array 260 of FIG. 2 performs the method 400. In another embodiment, the NV latch performs the method 400. Alternatively, other components of the system-on-a-chip 200 perform some or all of the operations of method 300.

Referring to FIG. 4, processing logic begins with applying power to the NV memory cell 250, the DMA controller 270, and the programmable analog block 220 (block 410). In one embodiment, the NV memory cell 250 is an NV latch. NV latches may be ideal for pre-boot calibration because they operate at 1.2V, instead of 1.6V as required for flash memory, whereas microcontroller operating voltages are typically 3.3V or 5V. In another embodiment, the processing logic powers up the NV latches and the programmable analog blocks 220 without powering up the DMA controller 270, the programmable logic array 260, the programmable routing fabric 230, and/or the microcontroller 280. If the DMA controller 270 is powered up at block 410, the processing logic instructs the DMA controller 270 to transfer the calibration value stored in the NV memory cells 250 to the associated programmable analog block 220. In one embodiment, the calibration values stored in the NV memory cells 250 are generated during the iterative calibration process as described above. At block 430, the processing logic calibrates the programmable analog block 220 with the calibration value. In one embodiment, the processing logic applies the calibrated value transferred from the NV memory cell 250 by the DMA controller 270. In another embodiment when the NV memory cell 250 is a NV latch, the NV latch directly applies the calibrated value to the programmable analog block 220. At block 440, the processing logic, after calibration of the programmable analog block 220, boots the microcontroller 280.

FIG. 5 illustrates a functional block diagram of a system-on-a-chip 500 for generating a calibration value (i.e. “trim value” or “correction factor”) for a programmable analog block according to an embodiment of the present invention. The system-on-a-chip 500 includes an input block 505, a programmable analog system 510 which includes multiple programmable analog blocks (not shown), a microcontroller 580, an NV latch 550, and flash memory 555. In one embodiment, a programmable routing fabric (not shown) is included in the programmable analog system 510 and functions as described in FIG. 2. In other embodiments, the programmable routing fabric may be partially or completely external to the programmable analog system 510. In one embodiment, the system-on-a-chip 500 is fully integrated on a single silicon substrate. In one embodiment, the input 505 may be integrated or separate from the single silicon substrate, as in a DUT socket configuration, for example.

In one embodiment, the microcontroller 580 configures the programmable analog blocks in the programmable analog system 510 in one of a variety of functional modes of operation to be calibrated, as described above in FIG. 2. The microcontroller 580 may also configure the analog routing for the programmable analog blocks. In one embodiment, the programmable analog system 510 measures the output value of the programmable analog blocks and interacts with the microcontroller 580 to perform a dynamic iterative calibration algorithm to the output to minimize the difference between the current output signal and a predetermined output value to generate a calibration value, similar to that as described in FIG. 2. Once the calibration value is determined, the microcontroller 580 may store the calibration value in the flash memory 555 or non-volatile latches 550.

FIG. 6 illustrates a functional block diagram of a system-on-a-chip 600 for generating a calibration value for calibrating a programmable analog block according to an embodiment of the present invention. The system-on-a-chip 600 includes an input block 605, a programmable analog system 610 which includes multiple programmable analog blocks (not shown) and a programmable routing fabric (not shown), a microcontroller 680, an NV latch 650, flash memory 655, and a programmable logic array 660. The programmable routing fabric functions as described in FIG. 2. Alternatively, the system-on-a-chip 600 may include a DMA controller 670. In one embodiment, the system-on-a-chip 600 is fully integrated on a single silicon substrate. In one embodiment, the input 605 may be integrated or separate from the single silicon substrate.

In one embodiment, the microcontroller 680 configures the programmable analog blocks in the programmable analog system 610 in one of a variety of functional modes of operation to be calibrated, as described above in FIG. 2. The microcontroller 580 may also configure the analog routing for the programmable analog blocks. In this embodiment, the programmable analog system 510 measures the output value of the programmable analog blocks and interacts with the programmable logic array 660 to perform a dynamic iterative calibration algorithm to the output to minimize the difference between the current output signal and a predetermined output value to generate a calibration value, similar to that as described in FIG. 2.

Once the final calibration value is determined, the programmable logic array 660 may store the calibration value in the flash memory 655 or non-volatile latches 650. In one embodiment, the microcontroller 680 reads the final calibration value from the programmable logic array 660 and transfers it to the flash memory 655 for storage. In another embodiment, the microcontroller 680 transfers the final calibration value to an NV latch 650. Alternatively, the final calibration value may be transferred to memory independently of the microcontroller 680. For example, in one embodiment, the programmable logic array 660 transfers the final calibration value to the flash memory 655 and/or NV latch 650 for storage using the DMA controller 670. In another embodiment, multiple paths or memory locations may be used to store the final calibration value. For example, the microcontroller 680 may read the final calibration value from the programmable logic array 660 and transfer it to the flash memory 655, while the programmable logic array 660 transfer the final calibration value to NV latch 650 independently.

FIG. 7 illustrates a functional block diagram of a system-on-a-chip 700 for loading calibration data to a programmable analog system 710 according to an embodiment of the present invention. The system-on-a-chip 700 includes a microcontroller 780, an NV latch 750, a flash memory 755, a programmable analog system 710 which includes multiple programmable analog blocks (not shown) and a programmable routing fabric (not shown), and a DMA controller 770. The programmable routing fabric functions as described in FIG. 2. In one embodiment, the system-on-a-chip 700 is fully integrated on a single silicon substrate. The calibration data described herein may be the final calibration value as described in FIG. 6.

The programmable analog blocks may receive the final calibration value from multiple sources. In one embodiment, the NV latch 750 is directly connected to the programmable analog system 710 so the final calibration value may be directly loaded and immediately available in the appropriate programmable analog block, independent of both the DMA controller 770 and microcontroller 780. The benefits associated with a direct loading scheme using NV latches are discussed in FIG. 2.

In one embodiment, the final calibration value may be loaded via the flash memory 755 and DMA controller 770. The DMA controller 770 receives the final calibration value from the flash memory 755 and loads the final calibration value in the appropriate programmable analog block. In one embodiment, the programmable logic array 260 can instruct the DMA controller 770 to apply the final calibration value, stored in flash memory 755, to the appropriate programmable analog block independent of the microcontroller 780. In another embodiment, the microcontroller 780 can instruct the DMA controller 770 to apply the final calibration value stored in flash memory 755. In yet another embodiment, the microcontroller 780 receives the final calibration value directly from the flash memory 750 and loads it into the appropriate programmable analog block. In this embodiment, the microcontroller 780 must complete boot up and requires CPU cycles to read from the flash memory 755 and apply the final calibration value to the appropriate programmable analog block.

Alternatively, the programmable analog blocks may receive calibration data from a combination of sources. In one embodiment, the programmable analog block receives a first calibration value from the NV latch 750, then additional calibration data from the flash memory 755 (e.g., via the DMA controller 770 and/or the microcontroller 780). For example, in one embodiment, the programmable analog blocks may receive “rough” or low resolution calibration data from the NV latches 750 and “fine” or higher resolution calibration data from the flash memory 755 via the DMA controller 770, microcontroller 780, or a combination of both. The advantages of using a hybrid methodology would be appreciated by one of ordinary skill in the art having the benefit of this disclosure.

While particular elements, embodiments, and applications of the present invention have been shown and described, it is understood that the invention is not limited thereto because modifications may be made by those skilled in the art, particularly in light of the foregoing teaching. It is therefore contemplated by the appended claims to cover such modifications and incorporate those features which come within the spirit and scope of the invention.

It should be appreciated that references throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Therefore, it is emphasized and should be appreciated that two or more references to “an embodiment” or “one embodiment” or “an alternative embodiment” in various portions of this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures or characteristics may be combined as suitable in one or more embodiments of the invention. In addition, while the invention has been described in terms of several embodiments, those skilled in the art will recognize that the invention is not limited to the embodiments described. The embodiments of the invention can be practiced with modification and alteration within the scope of the appended claims. The specification and the drawings are thus to be regarded as illustrative instead of limiting on the invention. 

What is claimed is:
 1. A system for calibrating a programmable analog block, comprising: a microcontroller; a programmable analog block coupled to the microcontroller, wherein the programmable analog block has a programmable value to be calibrated; an analog-to-digital converter (ADC) coupled to the programmable analog block, wherein the ADC is configured to digitize an output signal from the programmable analog block; and a programmable routing fabric coupled to the microcontroller, the programmable analog block, and the ADC, wherein the programmable routing fabric is configured to operate in a first mode of operation and a second mode of operation, wherein the programmable routing fabric is configured to switch between the first and second modes, wherein the microcontroller, the programmable analog block, the ADC, and the programmable routing fabric are integrated on a common substrate.
 2. The system of claim 1, wherein the first mode of operation is a normal mode in which the programmable routing fabric is configured to route data between the microcontroller, the programmable analog block, and the ADC, and wherein the second mode of operation is a calibration mode in which the programmable routing fabric is configured to route calibration data between at least the programmable analog block and the ADC to calibrate the programmable analog block.
 3. The system of claim 1, further comprising a programmable logic array coupled to the programmable routing fabric and the microcontroller, wherein the programmable logic array is configured to receive the digitized output signal from the ADC through the programmable routing fabric, and to calibrate the programmable value using the digitized output signal, wherein the programmable logic array is configured to calibrate the programmable value independent of the microcontroller, wherein the programmable logic array is integrated on the common substrate.
 4. The system of claim 3, wherein the first mode of operation is a normal mode in which the programmable routing fabric is configured to route data between the microcontroller, the programmable analog block, the programmable logic array, and the ADC, and wherein the second mode of operation is a calibration mode in which the programmable routing fabric is configured to route calibration data between at least the microcontroller, the programmable analog block, the programmable logic array, and the ADC to calibrate the programmable analog block.
 5. The system of claim 3, further comprising a non-volatile memory cell coupled to the programmable analog block when applying the calibrated programmable value to the programmable analog block, and wherein the non-volatile memory cell is coupled to at least one of the microcontroller and the programmable logic array when writing the calibrated programmable value into the non-volatile memory cell.
 6. The system of claim 1, further comprising a plurality of programmable analog blocks coupled to the programmable routing fabric, wherein one of the plurality of programmable analog blocks is configured to operate as the ADC and another one of the plurality of programmable analog blocks is configured as the programmable analog block to be calibrated.
 7. The system of claim 6, wherein the programmable routing fabric further comprises a global analog bus, wherein the global analog bus is configured to interconnect the plurality of programmable analog blocks.
 8. The system of claim 3, wherein the programmable logic array is configured to calibrate the programmable value using an iterative process.
 9. The system of claim 1, wherein the microcontroller is configured to receive the digitized output signal from the ADC through the programmable routing fabric, and to calibrate the programmable value using the digitized output signal.
 10. The system of claim 5, wherein the non-volatile memory cell is a non-volatile (NV) latch, and wherein the NV latch is configured to directly apply the calibrated programmable value to the programmable analog block when the programmable analog block is powered on.
 11. The system of claim 5, further comprising a direct memory access (DMA) controller coupled to the programmable logic array, the microcontroller, the non-volatile memory cell, and the programmable routing fabric, wherein the DMA controller is configured to transfer the calibrated programmable value from the non-volatile memory cell to the programmable analog block through the programmable routing fabric, wherein the DMA controller is integrated on the common substrate, wherein the non-volatile memory cell is a flash memory cell of a flash memory, wherein the DMA controller is configured to transfer the stored calibrated programmable value from the flash memory cell to the programmable analog block prior to boot up of the microcontroller.
 12. A method to calibrate a programmable analog block, comprising: transferring an output value from a programmable analog block to an analog-to-digital converter (ADC) with a programmable routing fabric configured to operate in a first mode of operation and a second mode of operation, wherein the programmable analog block is configured to generate the output value based on a functional mode of operation, wherein the output value has a programmable value to be calibrated, wherein the programmable routing fabric is configured to interconnect at least the programmable analog block and the ADC during the first mode; digitizing the output value of the programmable analog block using the ADC; calibrating the programmable value using the digitized output value while the programmable routing fabric is in the first mode; and switching the programmable routing fabric from the first mode to a second mode after said calibrating, wherein the programmable analog block, the programmable routing fabric, and the ADC are integrated on a common substrate.
 13. The method of claim 12, wherein calibrating the programmable value further comprises: transferring the digitized output value from the ADC to a programmable logic array with the programmable routing fabric; calibrating, using the programmable logic array, the programmable value using the digitized output value, wherein said calibrating by the programmable logic array is performed independent of a microcontroller, wherein the microcontroller and the programmable logic array are integrated on the common substrate; and storing the calibrated programmable value in a non-volatile memory cell.
 14. The method of claim 12, wherein calibrating the programmable value further comprises: transferring the digitized output value from the ADC to a microcontroller with the programmable routing fabric; calibrating, using the microcontroller, the programmable value using the digitized output value, wherein the microcontroller is integrated on the common substrate; and storing the calibrated programmable value in a non-volatile memory cell.
 15. The method of claim 14, wherein the non-volatile memory cell is a non-volatile latch, wherein the method further comprises directly applying the calibrated programmable value to the programmable analog block when the programmable analog block is powered on.
 16. The method of claim 15, further comprising transferring an additional calibrated value stored in a flash memory to the programmable analog block through the programmable routing fabric after the microcontroller is powered on.
 17. The method of claim 12, wherein said calibrating comprises calibrating the programmable analog block using an iterative process.
 18. A method to calibrate a programmable analog block, comprising: accessing a non-volatile (NV) latch storing a calibrated value for a programmable analog block, wherein the programmable analog block is configured to generate an output value based on a functional mode of operation using the calibrated value; applying the calibrated value to the programmable analog block to calibrate the output value of the programmable analog block; and booting a microcontroller after said applying the calibrated value to the programmable analog block.
 19. The method of claim 18, further comprising transferring additional calibrated value stored in a flash memory to the programmable analog block after said booting the microcontroller.
 20. The method of claim 18, further comprising performing an operation, by the programmable analog block, using the calibrated value. 